iT邦幫忙

2026 iThome 鐵人賽

DAY 9
0

更新一個服務,最常見的動作就是換 Image。目前 deployment.yaml 寫的是 nginx:alpine,這種 tag 會一直跟著最新版跑,換了也看不出差別,所以我改成指定版本號

把 image 那行改掉

containers:
  - name: nginx
    image: nginx:1.27-alpine

然後 apply,同時另外開一個視窗盯著 Pod

kubectl apply -f manifests/base/deployment.yaml
kubectl get pods -n ithome-lab -w

https://ithelp.ithome.com.tw/upload/images/20260923/20176154SCaW2WHhQU.png

那個 -w 是 watch,它不會自己結束,會一直印狀態變化,看夠了就按 Ctrl+C。這裡的重點是舊的沒有一次全砍,而是一邊起新的一邊收舊的,這就是滾動更新。預設策略允許最多多開四分之一、也最多少四分之一,所以更新過程中服務不會整個斷掉

不想一直盯著 -w 的話,有專門看進度的指令

kubectl rollout status deployment/web -n ithome-lab

這行會卡住直到更新結束,成功會印 successfully rolled out。它在腳本裡特別好用,因為它會用結束代碼告訴你到底成功還失敗

更新完再看一次 ReplicaSet

kubectl get replicaset -n ithome-lab

https://ithelp.ithome.com.tw/upload/images/20260923/20176154qBuyh9d8ID.png

舊的那個沒有被刪掉,只是被縮到 0。K8s 故意留著,因為要退版的時候把它拉回來就好,不用重新拉 Image 也不用重算。版本數可以用 revisionHistoryLimit 調

歷史紀錄也看得到

kubectl rollout history deployment/web -n ithome-lab

https://ithelp.ithome.com.tw/upload/images/20260923/20176154UhyLf65unY.png

我第一次看的時候 CHANGE-CAUSE 整欄都是 none,想說是要怎麼填。才知道那要在 Deployment 的 metadata 補一個 annotation

metadata:
  name: web
  namespace: ithome-lab
  annotations:
    kubernetes.io/change-cause: "upgrade nginx to 1.27-alpine"

這剛好就是前幾天提過的 annotations 的用途,放給人跟工具看的備註,不參與篩選

接下來是退版,假設剛剛那個版本有問題

kubectl rollout undo deployment/web -n ithome-lab
kubectl rollout status deployment/web -n ithome-lab
kubectl get pods -n ithome-lab

https://ithelp.ithome.com.tw/upload/images/20260923/20176154es1DC9mo5J.png

undo 不帶參數就是退回上一版,想指定退到哪一版就加 --to-revision

kubectl rollout undo deployment/web -n ithome-lab --to-revision=1

退版本身也算一次新的更新

最後提一個之後會很常用的指令。除了改 YAML,也可以直接用指令換 Image

kubectl set image deployment/web nginx=nginx:alpine -n ithome-lab

nginx= 前面那個是 Container 的名字。這種改法一樣不會回寫到 YAML,但臨時測試很方便

今天先到這,明天見 :D


上一篇
Day 8 Deployment
下一篇
Day 10 Service
系列文
讓Claude Code當我的 K8s 助教:部署、故障排查與入門可觀測性 共 12 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
justin_log
iT邦新手 4 級 ‧ 2026-09-24 17:07:25

學長!我9/21有在您的文章下面留幾個問題,若學長有空的話請再幫我撥冗回覆,謝謝學長!

noalowo iT邦新手 4 級 ‧ 2026-09-24 17:09:18 檢舉

可以不要檢舉我嗎:(

我要留言

立即登入留言